      *  cobc -x generar.cbl -o generar.exe
      ******************************************************************
       IDENTIFICATION DIVISION.
      ******************************************************************
       PROGRAM-ID. generar.       

      ******************************************************************
       ENVIRONMENT DIVISION.
      ******************************************************************
       INPUT-OUTPUT SECTION.
       FILE-CONTROL.
        SELECT ArchivoReservas1 ASSIGN TO "RES1.DAT"
        ORGANIZATION IS LINE SEQUENTIAL.
        SELECT ArchivoReservas2 ASSIGN TO "RES2.DAT"
        ORGANIZATION IS LINE SEQUENTIAL.
        SELECT ArchivoReservas3 ASSIGN TO "RES3.DAT"
        ORGANIZATION IS LINE SEQUENTIAL.
        SELECT ArchivoEstadias ASSIGN TO "ESTADIAS.DAT"
        ORGANIZATION IS LINE SEQUENTIAL.
        SELECT ArchivoCategorias ASSIGN TO "CATEGORIAS.DAT"
        ORGANIZATION IS LINE SEQUENTIAL.

      ******************************************************************
       DATA DIVISION.
      ******************************************************************
      *****************************************************
       FILE SECTION.
      *****************************************************
       FD ArchivoReservas1.
       01 RegistroReservas1.

          03 RES1-COD-RES PIC 9(6).
           03 RES1-RECURSO.
              05 FECHA-DES PIC X(10).
              05 FECHA-HAS PIC X(10).
              05 CATEG-HAB PIC 9(4).
           03 RES1-PERSONA.
              05 NOMBRE-CLI PIC X(30).
              05 TEL PIC X(15).
              05 DIR PIC X(30).
           03 RES1-IMP-RES PIC S9(6)V99.
      *********************************
        FD ArchivoReservas2.
        01 RegistroReservas2.
           03 RES2-COD-RES PIC 9(6).
           03 RES2-RECURSO.
              05 FECHA-DES PIC X(10).
              05 FECHA-HAS PIC X(10).
              05 CATEG-HAB PIC 9(4).
           03 RES2-PERSONA.
              05 NOMBRE-CLI PIC X(30).
              05 TEL PIC X(15).
              05 DIR PIC X(30).
           03 RES2-IMP-RES PIC S9(6)V99.
      *********************************
        FD ArchivoReservas3.
        01 RegistroReservas3.
           03 RES3-COD-RES PIC 9(6).
           03 RES3-RECURSO.
              05 FECHA-DES PIC X(10).
              05 FECHA-HAS PIC X(10).
              05 CATEG-HAB PIC 9(4).
           03 RES3-PERSONA.
              05 NOMBRE-CLI PIC X(30).
              05 TEL PIC X(15).
              05 DIR PIC X(30).
           03 RES3-IMP-RES PIC S9(6)V99.
      *********************************
        FD ArchivoEstadias.
        01 RegistroEstadias.
           03 EST-COD-RES PIC 9(6).
           03 EST-RECURSO.
              05 FECHA-DES PIC X(10).
              05 FECHA-HAS PIC X(10).
              05 CATEG-HAB PIC 9(4).
           03 EST-IMPORTE PIC S9(6)V99.
        FD ArchivoCategorias.
        01 RegistroCategorias.
           03 CAT-CATEG-HB PIC 9(4).
           03 CAT-DESCRIP PIC X(15).
      *****************************************************
       WORKING-STORAGE SECTION.
      *****************************************************
       01 RegistroPersona.
          03 NOMBRE-CLI PIC X(30).
          03 TEL PIC X(15).
          03 DIR PIC X(30).

       01 RegistroRecurso.
          03 FECHA-DES PIC X(10).
          03 FECHA-HAS PIC X(10).
          03 CATEG-HAB PIC 9(4).
       77 CodigoReserva PIC 9(6) VALUE 1.
       77 Importe PIC S9(6)V99.
       77 Categoria PIC 9(4) VALUE 1.
       77 Descripcion PIC X(15).

      ******************************************************************
       PROCEDURE DIVISION.
      ******************************************************************
       Begin.
         PERFORM CargarReservas1.
         PERFORM  CargarReservas2.
         PERFORM  CargarReservas3.
         PERFORM  CargarEstadias.
         PERFORM  CargarCategorias.
         STOP RUN.

      *********************************
       CargarReservas1.
         DISPLAY "Carga de Reservas 1".
         OPEN OUTPUT ArchivoReservas1.
         PERFORM ObtenerCodigoReserva.

         PERFORM UNTIL CodigoReserva = 0
           PERFORM ObtenerRecurso
           PERFORM ObtenerPersona
           PERFORM ObtenerImporte
           MOVE CodigoReserva TO RES1-COD-RES
           MOVE RegistroRecurso TO RES1-RECURSO
           MOVE RegistroPersona TO RES1-PERSONA
           MOVE Importe TO RES1-IMP-RES
           WRITE RegistroReservas1
           PERFORM ObtenerCodigoReserva
         END-PERFORM.
         CLOSE ArchivoReservas1.
      *********************************
       CargarReservas2.
         DISPLAY "Carga de Reservas 2".
         OPEN OUTPUT ArchivoReservas2.
         PERFORM ObtenerCodigoReserva.
         PERFORM UNTIL CodigoReserva = 0
           PERFORM ObtenerRecurso
           PERFORM ObtenerPersona
           PERFORM ObtenerImporte
           MOVE CodigoReserva TO RES2-COD-RES
           MOVE RegistroRecurso TO RES2-RECURSO
           MOVE RegistroPersona TO RES2-PERSONA
           MOVE Importe TO RES2-IMP-RES
           WRITE RegistroReservas2
           PERFORM ObtenerCodigoReserva
         END-PERFORM.
         CLOSE ArchivoReservas2.

      *********************************
       CargarReservas3.
         DISPLAY "Carga de Reservas 3".
         OPEN OUTPUT ArchivoReservas3.
         PERFORM ObtenerCodigoReserva.

         PERFORM UNTIL CodigoReserva = 0
           PERFORM ObtenerRecurso
           PERFORM ObtenerPersona
           PERFORM ObtenerImporte
           MOVE CodigoReserva TO RES3-COD-RES
           MOVE RegistroRecurso TO RES3-RECURSO
           MOVE RegistroPersona TO RES3-PERSONA
           MOVE Importe TO RES3-IMP-RES
           WRITE RegistroReservas3
           PERFORM ObtenerCodigoReserva
         END-PERFORM.
         CLOSE ArchivoReservas3.

      *********************************
       CargarEstadias.
         DISPLAY "Carga de Estadias".
         OPEN OUTPUT ArchivoEstadias.
         PERFORM ObtenerCodigoReserva.

         PERFORM UNTIL CodigoReserva = 0
           PERFORM ObtenerRecurso
           PERFORM ObtenerImporte
           MOVE CodigoReserva TO RES2-COD-RES
           MOVE RegistroRecurso TO EST-RECURSO
           MOVE Importe TO EST-IMPORTE
           WRITE RegistroEstadias
           PERFORM ObtenerCodigoReserva
         END-PERFORM.
         CLOSE ArchivoEstadias.

      *********************************
       CargarCategorias.
         DISPLAY "Carga de Categorias".
         OPEN OUTPUT ArchivoCategorias.
         PERFORM ObtenerCategoria.
         PERFORM UNTIL Categoria = 0
           PERFORM ObtenerDescripcion
           MOVE Categoria TO CAT-CATEG-HB
           MOVE Descripcion TO CAT-DESCRIP
           WRITE RegistroCategorias
           PERFORM ObtenerCategoria
         END-PERFORM.
         CLOSE ArchivoCategorias.

      *********************************
       ObtenerCategoria.
         DISPLAY "Categoria?".
         DISPLAY "9999".
         ACCEPT Categoria.

      *********************************
       ObtenerDescripcion.
         DISPLAY "Descripcion?".
         DISPLAY "XXXXXXXXXXXXXXX".
         ACCEPT Descripcion.

      *********************************
       ObtenerImporte.
         DISPLAY "Importe?".
         DISPLAY "999999.99".
         ACCEPT CodigoReserva.

      *********************************
       ObtenerCodigoReserva.
         DISPLAY "Ingresa Codigo de Reserva".
         DISPLAY "999999".
         ACCEPT CodigoReserva.

      *********************************
       ObtenerRecurso.
         DISPLAY "Fecha desde?".
         DISPLAY "XXXX-XX-XX".
         ACCEPT FECHA-DES of RegistroRecurso.
         DISPLAY "Fecha hasta?".
         DISPLAY "XXXX-XX-XX".
         ACCEPT FECHA-HAS of RegistroRecurso.
         DISPLAY "Categoria habitacion?".
         DISPLAY "9999".
         ACCEPT CATEG-HAB of RegistroRecurso.

      *********************************
       ObtenerPersona.
         DISPLAY "Nombre?".
         DISPLAY "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
         ACCEPT NOMBRE-CLI of RegistroPersona.
         DISPLAY "Telefono?".
         DISPLAY "XXXXXXXXXXXXXXX"
         ACCEPT  TEL of RegistroPersona.
         DISPLAY "Direccion?".
         DISPLAY "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
         ACCEPT DIR of RegistroPersona.
